package com.baturu.mybatisminus.annotation.info;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
import org.apache.ibatis.type.TypeHandler;
import org.apache.ibatis.type.UnknownTypeHandler;

/**
 * @author huangbin
 */
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ColumnAnnotation {

    private String values;

    private boolean insertable;

    private boolean updatable;

    private Class<? extends TypeHandler> typeHandler;

    private boolean emptyStringAsNull;

    /**
     * 对应的表字段名称
     */
    public String value() {
        return values;
    }

    /**
     * 是否在生成的insert语句中包含该值，适用于createTime，updateTime类似的字段<br>
     * 在保存时不填充该值，由数据库自动赋值
     */
    public boolean insertable() {
        return insertable;
    }

    /**
     * 是否在生成的update语句包含该值，适用于updateTime类似的字段<br>
     * 在更新时不填充该值，由数据库自动赋值
     */
    public boolean updatable() {
        return updatable;
    }

    /**
     * 为该字段指定特定的类型处理器
     */
    public Class<? extends TypeHandler> typeHandler() {
        return typeHandler;
    }

    /**
     * 用于String类型的字段，当为true时则在dynamicSave和dynamicUpdate时会忽略空字符串
     */
    public boolean emptyStringAsNull() {
        return emptyStringAsNull;
    }

}
